'''
#include<iostream>
using namespace std;
int a[51][51][51],b[51][51][51][51],c[51][51][51];
int main(){
	int max=-1000;
	int n,m;
	cin>>n>>m;
	for(int i=0;i<n;++i)
		for(int j=0;j<m;++j)
			cin>>c[i][j][0];
	for(int i=0;i<n;++i)
		for(int j=0;j<m;++j)
			for(int k=0;k<m;++k)
				if(j==k)
					a[i][j][k]=c[i][j][0];
				else if(j>k)
					a[i][j][k]=c[i][j][0]+a[i][j-1][k];
	for(int i=0;i<n;++i)
		for(int j=0;j<m;++j)
			for(int k=0;k<m;++k)
				for(int l=0;l<n;++l){
					if(l==i&&j>=k)
						b[i][j][k][l]=a[i][j][k];
					else if(i>l&&j>=k)
						b[i][j][k][l]=b[i-1][j][k][l]+a[i][j][k];
					if(max<b[i][j][k][l]&&i>=l&&j>=k)
						max=b[i][j][k][l];
				}
	cout<<max;
	return 0;
}
已经不记得是谁做出来的了，我现在好像还是不会。捂脸。这是C语言原版。
'''
a = [[[0 for k in range(51)] for j in range(51)] for i in range(51)]
b = [[[[0 for l in range(51)] for k in range(51)] for j in range(51)] for i in range(51)]
c = [[[0 for k in range(51)] for j in range(51)] for i in range(51)]
n, m = map(int, input().split())
MAX = -1000 * 51
for i in range(n):
    x = [*map(int, input().split())]
    for j in range(m):
        c[i][j][0] = x[j]
for i in range(n):
    for j in range(m):
        for k in range(j):
            a[i][j][k] = c[i][j][0] + a[i][j - 1][k]
        a[i][j][j] = c[i][j][0]
for i in range(n):
    for j in range(m):
        for k in range(j + 1):
            for l in range(i + 1):
                if l == i: b[i][j][k][l] = a[i][j][k]
                else: b[i][j][k][l] = b[i - 1][j][k][l] + a[i][j][k]
                if MAX < b[i][j][k][l]: MAX = b[i][j][k][l]
print(MAX)
# -------------------------------------------------------------------------------

# 比赛环境为python3.8.6版本自带的IDLE，最好早点熟悉一下。。这个东西的提示时有时无

# 菜单栏最右边的Help的Python Docs 比赛时候也可以看，不过建议还是提前多了解了解，

# 比赛的时候至少知道在文档找什么能用的上。

# IDLE是下载Python时自带的，在按住win+s搜索IDLE就能搜到了。

# 然后点左上角的File可以创建新文件，然后按F5可以运行。
